**SUMEYYE ILTEKIN GOCER-JOANNE M. MILLER
**White Americans' "Loser" Perceptions and Redistributive Policy Preferences in the United States



************
***Set Up***
************

*clear existing memory and matrices
clear
clear matrix
program drop _all

*set memory higher and set more off
*note, newer versions of stata don't need first command
set mem 300m
set more off


*set a random number seed
set seed 123456789


**import dataset

use "C:\Users\sumey\OneDrive\Desktop\JOURNAL SUBMISSIONS\Research and Politics Article\researchandpoliticsarticledataset.dta"
*use "C:\Users\jomiller\OneDrive - UD College of Arts and Sciences\Desktop\DESKTOP Joanne\Sumeyye losers and redistribution atts project\Research and Politics REVISE AND RESUBMIT\Data File\Data File\researchandpoliticsarticledataset.dta"

*Describe data (prints variable labels to screen)
describe

ssc install coefplot, replace
ssc install estout, replace
ssc install fre, replace
ssc install asdoc, replace
ssc install estout, replace



***rename variables

*rename Q43 economicselfplacement
*rename Q44 politicalideology


*rename Q45A racialidentity1
*rename Q45B racialidentity2
*rename Q45C racialidentity3
*rename Q45D racialidentity4

*rename Q57A angryaboutracism
*rename Q57B whiteprivilege


**generate policy variables and reverse code

*gen governmentgivejobs=.
*replace governmentgivejobs=1 if Q25==7
*replace governmentgivejobs=2 if Q25==6
*replace governmentgivejobs=3 if Q25==5
*replace governmentgivejobs=4 if Q25==4
*replace governmentgivejobs=5 if Q25==3
*replace governmentgivejobs=6 if Q25==2
*replace governmentgivejobs=7 if Q25==1

*label variable governmentgivejobs "Government Give Jobs"

**** In the new variable, 1 means "The government should just let each person get ahead on their own" and 7 means The government should see to it that every person has a job and a good standard of living.


*gen governmentreduceinequality=.
*replace governmentreduceinequality=1 if Q26==7
*replace governmentreduceinequality=2 if Q26==6
*replace governmentreduceinequality=3 if Q26==5
*replace governmentreduceinequality=4 if Q26==4
*replace governmentreduceinequality=5 if Q26==3
*replace governmentreduceinequality=6 if Q26==2
*replace governmentreduceinequality=7 if Q26==1

*label variable governmentreduceinequality "Government Reduce Inequality"

**** In the new variable, 1 means "The government should not concern itself with reducing income differences between the rich and the poor" and 7 means "The government ought to reduce the income differences between the rich and the poor"



*gen incomeinequalityspending=.
*replace incomeinequalityspending=3 if Q28B==3
*replace incomeinequalityspending=2 if Q28B==2
*replace incomeinequalityspending=1 if Q28B==1

*label variable incomeinequalityspending "Income Inequality Spending"

*gen racialincomeinequalityspending=.
*replace racialincomeinequalityspending=3 if Q28A==3
*replace racialincomeinequalityspending=2 if Q28A==2
*replace racialincomeinequalityspending=1 if Q28A==1

*label variable racialincomeinequalityspending "Racial Income Inequality Spending"



***In the new variable, 3 means government is spending too little money, 1 means government is spending too much money


**generate democrat variable
*gen democrat=0
*replace democrat=1 if Q35AA==1
*replace democrat=1 if Q35I==1

*label variable democrat "Democrat"

**generate republican variable
*gen republican=0
*replace republican=1 if Q35AA==2
*replace republican=1 if Q35I==2

*label variable republican "Republican"



***Reverse Code stracialfear straceisnotaproblem


*gen racialfear=.
*replace racialfear=1 if Q57C==5
*replace racialfear=2 if Q57C==4
*replace racialfear=3 if Q57C==3
*replace racialfear=4 if Q57C==2
*replace racialfear=5 if Q57C==1

*label variable racialfear "Racial Fear"

*gen raceisnotaproblem=.
*replace raceisnotaproblem=1 if Q57D==5
*replace raceisnotaproblem=2 if Q57D==4
*replace raceisnotaproblem=3 if Q57D==3
*replace raceisnotaproblem=4 if Q57D==2
*replace raceisnotaproblem=5 if Q57D==1

*label variable raceisnotaproblem "Race is not a Problem"

**Generate white variable

*gen white=0
*replace white=1 if RACETHNICITY==1

*label variable white "White"


*** White Loser relative to Minorities Feeling Variable
*gen relativewhiteloser=.
*replace relativewhiteloser=6 if Q10B==1
*replace relativewhiteloser=5 if Q10B==2
*replace relativewhiteloser=4 if Q10B==3
*replace relativewhiteloser=3 if Q10A==3
*replace relativewhiteloser=2 if Q10A==2
*replace relativewhiteloser=1 if Q10A==1

*label variable relativewhiteloser "Relative White Loser"

***Absolute White Loser
*gen absolutewhiteloser=.
*replace absolutewhiteloser=6 if Q11B==1
*replace absolutewhiteloser=5 if Q11B==2
*replace absolutewhiteloser=4 if Q11B==3
*replace absolutewhiteloser=3 if Q11A==3
*replace absolutewhiteloser=2 if Q11A==2
*replace absolutewhiteloser=1 if Q11A==1

*label variable absolutewhiteloser "Absolute White Loser"






*Generate basic summary statistics for each variable
*summarize

*Generate advanced summary statistics for each variable (it gives us the median!)
*summarize, detail


*To get a mode of any variable
* table variable_name
*table politicalideology

*Fix the "missing" cases

*replace governmentgivejobs=. if governmentgivejobs==98
*replace governmentreduceinequality=. if governmentreduceinequality==98

*replace economicselfplacement=. if economicselfplacement==98
*replace politicalideology=. if politicalideology==98


*replace angryaboutracism=. if angryaboutracism==98
*replace whiteprivilege=. if whiteprivilege==98
*replace racialfear=. if racialfear==98
*replace raceisnotaproblem=. if raceisnotaproblem==98

*replace racialidentity1=. if racialidentity1==98
*replace racialidentity2=. if racialidentity2==98 
*replace racialidentity3=. if racialidentity3==98 
*replace racialidentity4=. if racialidentity4==98 

*replace incomeinequalityspending=. if incomeinequalityspending==98
*replace racialincomeinequalityspending=. if racialincomeinequalityspending==98

*tab absolutewhiteloser
*tab relativewhiteloser

*pwcorr absolutewhiteloser relativewhiteloser, sig obs



**Generate whitelosercondition
*gen whitelosercondition=.
**general white loser
*replace whitelosercondition=0 if RND_01==1 
**relative white loser
*replace whitelosercondition=1 if RND_01==0 

*fre relativewhiteloser absolutewhiteloser whiteloser RND_01

*fre relativewhiteloser if RND_01==0
*fre relativewhiteloser if RND_01==1

*fre absolutewhiteloser if RND_01==0
*fre absolutewhiteloser if RND_01==1

****Generate white loser
*gen whiteloser=.
*replace whiteloser=relativewhiteloser if whitelosercondition==1
*replace whiteloser=absolutewhiteloser if whitelosercondition==0

*label variable whiteloser "White Loser"

*tab relativewhiteloser
*tab absolutewhiteloser
*tab whiteloser
*tab whitelosercondition

*sum RND_01


*gen female=.
*replace female=1 if GENDER==2
*replace female=0 if GENDER==1

*fre GENDER female

*gen age01=.
*replace age01=((AGE-18)/73)

*fre AGE age01


*gen educcomb01=.
*replace educcomb01=0 if EDUC<=8
*replace educcomb01=.25 if EDUC==9
*replace educcomb01=.5 if EDUC==10 | EDUC==11
*replace educcomb01=.75 if EDUC==12
*replace educcomb01=1 if EDUC>12

*fre EDUC educcomb01

*gen employed=.
*replace employed=1 if EMPLOY==1 | EMPLOY==2
*replace employed=0 if EMPLOY>2

*fre EMPLOY employed

*gen inc01=.
*replace inc01=(INCOME-1)/17

*fre INCOME inc01


*keep economicselfplacement politicalideology racialidentity1 racialidentity2 racialidentity3 racialidentity4 angryaboutracism whiteprivilege racialfear raceisnotaproblem governmentgivejobs governmentreduceinequality incomeinequalityspending racialincomeinequalityspending relativewhiteloser absolutewhiteloser whiteloser whitelosercondition democrat republican female educcomb01 employed inc01 age01 AGE GENDER EDUC INCOME EMPLOY RACETHNICITY WEIGHT RND_01 


*fre relativewhiteloser absolutewhiteloser whiteloser RND_01

*keep if RACETHNICITY==1

*drop if whiteloser==.


*save "C:\Users\sumey\Desktop\Research and Politics Article\researchandpoliticsarticledataset.dta", replace

*use "C:\Users\sumey\Desktop\Research and Politics Article\researchandpoliticsarticledataset.dta"



*****STANDARDIZE COEFFICIENTS

gen stgovernmentgivejobs=(governmentgivejobs-1)/6
gen stgovernmentreduceinequality=(governmentreduceinequality-1)/6
gen steconomicselfplacement=(economicselfplacement-1)/9
gen stpoliticalideology=(politicalideology-1)/6
gen stangryaboutracism=(angryaboutracism-1)/4
gen stwhiteprivilege=(whiteprivilege-1)/4
gen straceisnotaproblem=(raceisnotaproblem-1)/4
gen stracialfear=(racialfear-1)/4
gen stracialidentity1=(racialidentity1-1)/4
gen stracialidentity2=(racialidentity2-1)/4
gen stracialidentity3=(racialidentity3-1)/4
gen stracialidentity4=(racialidentity4-1)/4
gen strelativewhiteloser=(relativewhiteloser-1)/5
gen stabsolutewhiteloser=(absolutewhiteloser-1)/5
gen stwhiteloser=(whiteloser-1)/5
gen stincomeinequalityspending=(incomeinequalityspending-1)/2
gen stracialincomeinequalityspending=(racialincomeinequalityspending-1)/2



label variable stracialincomeinequalityspending "Racial Income Inequality Spending"
label variable stincomeinequalityspending "Income Inequality Spending"
label variable stwhiteloser "White Loser"
label variable stabsolutewhiteloser "Absolute White Loser"
label variable strelativewhiteloser "Relative White Loser"
label variable steconomicselfplacement "Economic Self-Placement"
label variable stpoliticalideology "Political Ideology"
label variable stgovernmentgivejobs "Government Give Jobs"
label variable stgovernmentreduceinequality "Government Reduce Inequality"

***Create Index Variables

egen racialidentityindex=rowmean(stracialidentity1 stracialidentity2 stracialidentity3 stracialidentity4)
egen racialresentmentindex=rowmean(stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem)


alpha stracialidentity1 stracialidentity2 stracialidentity3 stracialidentity4
alpha stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem


egen econpolicyindex=rowmean(stgovernmentgivejobs stgovernmentreduceinequality)
alpha stgovernmentgivejobs stgovernmentreduceinequality


label variable racialidentityindex "Strength of Racial Identity"
label variable racialresentmentindex "Racial Resentment Index" 
label variable econpolicyindex "Economic Policy Index"
label variable GENDER "Gender"
label variable AGE "Age"
label variable EDUC "Education"
label variable EMPLOY "Employment"
label variable INCOME "Income"
label variable economicselfplacement "Subjective SES"
label variable politicalideology "Political Ideology"
label variable whitelosercondition "White Loser Condition"
label variable female "Female"
label variable inc01 "Income(0-1)"
label variable educcomb01 "Education(0-1)"
label variable age01 "Age(0-1)"






*****SET SURVEY WEIGHT
svyset[pw=WEIGHT]




****Making Dependent Variables*****

egen policycomb=rowmean(stgovernmentgivejobs stgovernmentreduceinequality stincomeinequalityspending)
label variable policycomb "Average of stgovernmentgivejobs stgovernmentreduceinequality stincomeinequalityspending"

fre policycomb


gen racialincspenddum=.
replace racialincspenddum=0 if stracialincomeinequalityspending==0 | stracialincomeinequalityspending==.5
replace racialincspenddum=1 if stracialincomeinequalityspending==1
label variable racialincspenddum "stracialincomeinequalityspending dichotomized"
label define racialincspenddumL 0 "decrease or same spending" 1 "increase sepending" 
label values racialincspenddum racialincspenddumL

fre racialincspenddum stracialincomeinequalityspending



**********Alphas reported in the paper***********

alpha stgovernmentgivejobs stgovernmentreduceinequality stincomeinequalityspending if RACETHNICITY==1
alpha stracialidentity1 stracialidentity2 stracialidentity3 stracialidentity4 if RACETHNICITY==1


***************FIGURE 1************************

histogram stabsolutewhiteloser if RACETHNICITY==1, discrete percent addlabels ylabel(,grid) xlabel(0(.2)1)
histogram strelativewhiteloser if RACETHNICITY==1, discrete percent addlabels ylabel(,grid) xlabel(0(.2)1)

sum stabsolutewhiteloser if RACETHNICITY==1
sum strelativewhiteloser if RACETHNICITY==1


******************************************************************************************************************
**NOTE: all analyses as of Dec. 2025 include the 4 racial attitudes as controls, rather than an index of the 4
******************************************************************************************************************


**************Table 1*********************


svyset[pw=WEIGHT]

***Non-racial redistribution index, main effect model and interation model

svy: reg policycomb stwhiteloser whitelosercondition stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican steconomicselfplacement employed inc01 educcomb01 female age01 if RACETHNICITY==1
estimates store a1

svy: reg policycomb i.whitelosercondition##c.stwhiteloser stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican steconomicselfplacement employed inc01 educcomb01 female age01 if RACETHNICITY==1
estimates store a2

***Racial redistribution index, main effect model and interation model

svy: reg racialincspenddum stwhiteloser whitelosercondition stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican steconomicselfplacement employed inc01 educcomb01 female age01 if RACETHNICITY==1
estimates store a3

svy: reg racialincspenddum i.whitelosercondition##c.stwhiteloser stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican steconomicselfplacement employed inc01 educcomb01 female age01 if RACETHNICITY==1
estimates store a4

esttab a1 a3 a2 a4 using "Table 1 all models December 2025.csv", se r2 replace starlevels(+ .10 * .05 ** .01 *** .001) b(2) se(2)


****************Figure 2****************************

svy: reg policycomb i.whitelosercondition##c.stwhiteloser stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican steconomicselfplacement racialidentityindex female age01 educcomb01 employed inc01 if RACETHNICITY==1
margins, dydx(stwhiteloser) at(whitelosercondition=(0(1)1))
margins, at(stwhiteloser=(0(.1)1)) over(whitelosercondition)
marginsplot, noci title("Interaction between Condition and Loser Perception Predicting the Economic Policy Index (Model 3 in Table 1)", col(black) nospan) xtitle(Loser Perception) recast(line) recastci(rline) ///
	legend(rows(1)) ///
	plot1opts(lwidth(thick)) ///
	plot2opts(lwidth(thick)) ///
	graphregion(fcolor(white) lcolor(white)) ///
	ylab(.30(.10).70, angle(0) labsize(small)) ///
	xlab(0 "Win great deal" .2 "Win somewhat" .4 "Win a little" .6 "Lose a little" .8 "Lose somewhat" 1 "Lose great deal", labsize(small)) ///
	ytitle("Econ Pol Index", col(white)) ///
	legend(textfirst) ///
	text(.45 .5 "-.02 (.05)") ///
    text(.56 .5 "-.17 (.06)") ///	
	scheme(s1mono)

	
****************Figure 3****************************

svy: reg racialincspenddum i.whitelosercondition##c.stwhiteloser stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican steconomicselfplacement racialidentityindex female age01 educcomb01 employed inc01 if RACETHNICITY==1
margins, dydx(stwhiteloser) at(whitelosercondition=(0(1)1))
margins, at(stwhiteloser=(0(.1)1)) over(whitelosercondition)
marginsplot, noci title("Interaction between Condition and Loser Perception Predicting Support for Government Spending to Reduce Inequality between Whites and Racial Minorities (Model 4 in Table 2)", col(black) nospan) xtitle(Loser Perception) recast(line) recastci(rline) ///
	legend(rows(1)) ///
	plot1opts(lwidth(thick)) ///
	plot2opts(lwidth(thick)) ///
	graphregion(fcolor(white) lcolor(white)) ///
	ylab(.30(.10).70, angle(0) labsize(small)) ///
	xlab(0 "Win great deal" .2 "Win somewhat" .4 "Win a little" .6 "Lose a little" .8 "Lose somewhat" 1 "Lose great deal", labsize(small)) ///
	ytitle("Reduce Racial Income Inequal", col(white)) ///
	legend(textfirst) ///
	text(.31 .5 ".05 (.08)") ///
    text(.44 .5 "-.23 (.08)") ///	
	scheme(s1mono)
	

******************Appendix C: Descriptive Statistics***************************

fre whitelosercondition republican female employed if RACETHNICITY==1

sum stabsolutewhiteloser strelativewhiteloser stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology steconomicselfplacement age01 AGE educcomb01 inc01 if RACETHNICITY==1



*sum

*asdoc tabulate  GENDER, replace


*foreach var in GENDER EMPLOY democrat republican  {
    *asdoc tab `var', append title(Frequency Table - `var')
*}


*asdoc summarize stabsolutewhiteloser strelativewhiteloser racialresentmentindex racialidentityindex stpoliticalideology steconomicselfplacement educcomb01 inc01 age01 , label replace title(Descriptive Statistics)




******************Appendix D***************************

***Racial redistribution index, main effect model and interation model

svyset[pw=WEIGHT]

svy: logit racialincspenddum stwhiteloser whitelosercondition stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican steconomicselfplacement employed inc01 educcomb01 female age01 if RACETHNICITY==1
estimates store b1 

svy: logit racialincspenddum i.whitelosercondition##c.stwhiteloser stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican steconomicselfplacement employed inc01 educcomb01 female age01 if RACETHNICITY==1
estimates store b2

esttab b1 b2 using "Appendix D Logit Racial Inc Inequal DV December 2025.csv", se r2 replace starlevels(+ .10 * .05 ** .01 *** .001) b(2) se(2)


********************************************************
**ANALYSES IN RESPONSE TO REVIEWERS' COMMENTS 
**FOR RESEARCH & POLITICS R & R
********************************************************

*NOTE: These analyses aren't reported in the final manuscript

**************Interaction with Income*********************

svyset[pw=WEIGHT]

***Non-racial redistribution index DV, interaction includes continuous income variable

svy: reg policycomb i.whitelosercondition##c.stwhiteloser##c.inc01 stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican steconomicselfplacement employed educcomb01 female age01 if RACETHNICITY==1
estimates store d1

***Racial redistribution index DV, interaction includes continuous income variable, regression

svy: reg racialincspenddum i.whitelosercondition##c.stwhiteloser##c.inc01 stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican steconomicselfplacement employed educcomb01 female age01 if RACETHNICITY==1
estimates store d2


***Racial redistribution index DV, interaction includes continuous income variable, logit

svy: logit racialincspenddum i.whitelosercondition##c.stwhiteloser##c.inc01 stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican steconomicselfplacement employed educcomb01 female age01 if RACETHNICITY==1
estimates store d3


esttab d1 d2 d3 using "interaction with inc Dec 2025.csv", se r2 replace starlevels(+ .10 * .05 ** .01 *** .001) b(2) se(2)



**************Interaction with Subjective econ placement*********************

svyset[pw=WEIGHT]

***Non-racial redistribution index DV, interaction includes continuous income variable

svy: reg policycomb i.whitelosercondition##c.stwhiteloser##c.steconomicselfplacement stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican employed inc01 educcomb01 female age01 if RACETHNICITY==1
estimates store g1

***Racial redistribution index DV, interaction includes continuous income variable, regression

svy: reg racialincspenddum i.whitelosercondition##c.stwhiteloser##c.steconomicselfplacement stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican employed inc01 educcomb01 female age01 if RACETHNICITY==1
estimates store g2


***Racial redistribution index DV, interaction includes continuous income variable, logit

svy: logit racialincspenddum i.whitelosercondition##c.stwhiteloser##c.steconomicselfplacement stracialfear stwhiteprivilege stangryaboutracism straceisnotaproblem racialidentityindex stpoliticalideology republican employed inc01 educcomb01 female age01 if RACETHNICITY==1
estimates store g3


esttab g1 g2 g3 using "interaction w subj ses Dec 2025.csv", se r2 replace starlevels(+ .10 * .05 ** .01 *** .001) b(2) se(2)

